A forwarding element such as a switch or a router can often send packets to a destination through several different egress paths. The forwarding elements utilize different algorithms to identify the best path to send the packets to optimize network congestion as well as transmission time.
In addition, the forwarding elements forward the packets of the same flow through the same path as long as that path is up in order to achieve one or more goals such as traffic shaping, quality of service, fair queuing, etc. However, a path used to forward packets of a flow may fail. For instance, the path may fail due to a port or a wire failure inside the forwarding element or due to a path failure several hops away between the forwarding element and a packet destination.
Once one of these egress paths fails, the forwarding element has to select an alternative path to forward the packets in order to avoid forwarding packets on the failed path. An alternative path is typically determined by removing the failed path from the set of paths to consider, applying the path determination algorithm to the remaining paths to redistribute packet flows through the remaining paths. However, redistribution of packet flows from the paths that did not go down in order to accommodate a failed path is not desirable since such redistribution is contrary to the above-mentioned goals of forwarding the packet of the same flows through the same paths.